package de.e2it3t.schulverwaltung.ui;

import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;
import de.e2it3t.schulverwaltung.App;
import java.awt.Dimension;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JTable;
import de.e2it3t.schulverwaltung.data.CommonTableModel;
import javax.swing.JScrollPane;

/**
 * Ansicht der Klassenübersicht.
 * 
 * @author Markus Kunz
 */
public class KlassenUebersichtView extends JPanel implements AppView {

    private JTable klassenTable;
    
    public KlassenUebersichtView()
    {
        setupKlassenTable();
        setLayout(new FormLayout(
                "fill:pref:grow, pref",
                "pref, 5px, fill:pref:grow"));
        
        CellConstraints cc = new CellConstraints();
        add(App.createInfoButton("<html>Die Klassenübersicht listet eine kompakte Übersicht "
                + "über alle vorhandenen Klassen.", 350, 50), cc.xy(2, 1));
        add(new JScrollPane(klassenTable), cc.xyw(1, 3, 2));
        
    }
    
    @Override
    public void refreshView() {
       klassenTable.setModel(new CommonTableModel(
               App.getDatabase().getKlassenuebersicht(),
               new String[] {"bezeichnung","lehrer","schueleranzahl"},
               new String[] {"Bezeichnung","Lehrer","Schüleranzahl"}));
    }

    @Override
    public JComponent getView() {
        return this;
    }

    @Override
    public String getViewName() {
        return "Klassenübersicht";
    }
    
    private void setupKlassenTable() {
        klassenTable = new JTable();
        // Liste soll den kompletten, zur Verfügung stehenden Platz nutzen
        klassenTable.setFillsViewportHeight(true);
        // Hack: wir brauchen eine gewünschte Größe, damit die Liste
        // gescrollt werden kann, wenn sie zu viele Einträge hat
        klassenTable.setPreferredScrollableViewportSize(new Dimension(50, 50));
        // wir wollen die Liste durch Klick auf die Header sortieren können
        klassenTable.setAutoCreateRowSorter(true);
      
    }
    
}
